@file:JvmName("RachelUtils")//@file,其中file表示作用对象
package com.example.core.utils

import android.content.res.Resources
import android.util.TypedValue
import android.widget.Toast
import com.example.core.BaseApplication

//定义静态函数的方式1
//kt调用，就直接导包，调用方法就可以dp2px（12f）
//java需要这样调用，UtilsKt.dp2px(12f);
//如果你仔细思考下，就会发现kt调用会有很大的问题
// 比如你有一个Utils，里面一个get方法，一个Utils2,里面一个get方法.
// 如果kotlin里面到底调用get方法，到底是谁的呢
private val displayMetrics = Resources.getSystem().displayMetrics
/*fun dp2px(dp: Float): Float {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics)
}*/
//扩展函数，给Float类增加一个函数
//注意：如果扩展函数和原函数一模一样，会调用原来的
fun Float.dp2px(): Float {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, displayMetrics)
}
object Utils {
/*    fun toast(string: String?) {
        toast(string, Toast.LENGTH_SHORT)
    }

    fun toast(string: String?, duration: Int) {
        Toast.makeText(BaseApplication.currentApplication, string, duration).show()
    }*/

    //使用函数参数默认值简化函数重载,但是这样写Java调用的时候是有问题的
    //必须使用注解 @JvmOverloads
    @JvmOverloads
    fun toast(string: String?, duration: Int=Toast.LENGTH_SHORT) {
        Toast.makeText(BaseApplication.currentApplication, string, duration).show()
    }
}

